1
Основы коллекций, выделенных на куче
AI034Lesson 8
00:00

Архитектура роста

Коллекции на языке Rust, такие как Vec<T> и String, не являются примитивными типами; они — структуры, определённые в библиотеке и находящиеся в модуле std модуля. Этот фундамент определяет, как язык Rust организует данные через систему модулей и управляет памятью с помощью RAII (инициализация приобретения ресурсов). В то время как простые типы хранятся на стеке, коллекции используют хранение на куче для динамического роста, что означает, что память должна управляться явно через Drop трейт.

Разрешение модулей и видимость

Компилятор языка Rust строит дерево модулей, начиная с корня крейта (src/lib.rs или src/main.rs). Объявление, подобное mod front_of_house; заставляет компилятор искать файлы src/front_of_house.rs или src/front_of_house/mod.rs. Использование pub модификаторов и повторной экспортирования (pub use), позволяет безопасно интерфейсироваться с заключёнными данными, выделенными на куче, через идиоматические пути.

Дерево разрешения файловsrc/lib.rssrc/front_of_house.rs- hosting.rspub use crate::front_of_house;let list = Vec::new();🦀?Опасность: конфликт между модулем .rs и модулем mod.rsвызывает ошибку компилятора (страница 183)

Как только область действия модуля завершается, реализация Drop автоматически освобождает память кучи: $$Memory_{reclaimed} = \sum Drop(Элементов)$$.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>